/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package oef15voertuig;

/**
 *
 * @author Joris.Lefever
 */
public abstract class Voertuig implements Privaat, Milieu, Comparable {
    private String polishouder = "onbepaald";
    private String nummerplaat = "onbepaald";
    private float kostprijs,gemVerbruik =0;
    private int pk = 0;
    
    public Voertuig(){
        
    }
    
     public Voertuig(String polishouder, float kostprijs, int pk, float gemVerbruik, String nummerplaat ){
        setPolishouder(polishouder);
        setKostprijs(kostprijs);
        setPk(pk);
        setGemVerbruik(gemVerbruik);
        setNummerplaat(nummerplaat);
    }

    public String getPolishouder() {
        return polishouder;
    }

    public final void setPolishouder(String polishouder) {
        this.polishouder = polishouder;
    }

    public String getNummerplaat() {
        return nummerplaat;
    }

    public final void setNummerplaat(String nummerplaat) {
        this.nummerplaat = nummerplaat;
    }

    public float getKostprijs() {
        return kostprijs;
    }

    public final void setKostprijs(float kostprijs) {
        if (kostprijs > 0)
            this.kostprijs = kostprijs;
    }

    public float getGemVerbruik() {
        return gemVerbruik;
    }

    public final void setGemVerbruik(float gemVerbruik) {
        if (gemVerbruik > 0)
            this.gemVerbruik = gemVerbruik;
    }

    public int getPk() {
        return pk;
    }

    public final void setPk(int pk) {
        if (pk > 0)
            this.pk = pk;
    }
     
    @Override
    public String toString(){
        return (polishouder + ", " + kostprijs + ", " + pk + ", " + gemVerbruik + ", " + nummerplaat);
    }
    
    public void toon(){
        System.out.println("De polis houder is " + polishouder + 
                "\nDe kostprijs is " + kostprijs + 
                "\nHet aantal pk's is " + pk + 
                "\nHet gemiddelde verbruik is " + gemVerbruik + 
                "\nDe nummerplaat is " + nummerplaat);
    }
    
    public abstract double getKyotoScore();
    
    @Override
    public void geefPrivateData(){
        System.out.println("\nDit zijn de private data voor volgend voertuig: ");
        System.out.println("Dit is de polishouder: " + this.getPolishouder());
        System.out.println("Dit is de nummerplaat: " + this.getNummerplaat());
    }
    
    @Override
    public void geefMilieuData(){
        System.out.println("\nDit zijn de milieu gegevens voor volgend voertuig: ");
        System.out.println("Dit zijn de pk's: " + this.getPk());
        System.out.println("Dit is de kostprijs: " + this.getKostprijs());
        System.out.println("Dit is het verbruik: " + this.getGemVerbruik());
    }
    
    /*
    @Override
    public int hashCode(){
        return Integer.parseInt(this.nummerplaat.substring(4,6));
    }
    */
    
    @Override
    public int compareTo(Object o){
        if (o == null)
            throw new NullPointerException();
        
        return this.getNummerplaat().compareTo(((Voertuig)o).getNummerplaat());
       
        
    }
    
    
    
}
